package sqlTestes.tComplexoSelect.tTabelaSelecao;

import junit.framework.Assert;

import org.junit.Test;

import sql.ddl.Tabela;
import sql.dml.selecao.tabela.TabelaSelecao;
import sql.dml.selecao.tabela.juncao.TabelaSelecaoNaturalJoin;
import sql.dml.selecao.tabela.juncao.TipoJuncaoPesquisa;

public class TesteNatuaralJoinsDeDuasTabelas {
	TabelaSelecaoNaturalJoin obj;

	Tabela tabela1 = new Tabela("Tabela1");

	Tabela tabela2 = new Tabela("Tabela2");

	@Test
	public void juncaoNaturalEntreDuasTabelas() {
		obj = new TabelaSelecaoNaturalJoin(new TabelaSelecao(tabela1, null),
				new TabelaSelecao(tabela2, null));
		Assert.assertEquals("Tabela1 NATURAL INNER JOIN Tabela2", obj
				.codigoSQL());
	}

	@Test
	public void juncaoNatualRightEntreDuasTabelas() {
		obj = new TabelaSelecaoNaturalJoin(new TabelaSelecao(tabela1, null),
				new TabelaSelecao(tabela2, null), TipoJuncaoPesquisa.RIGHT);
		Assert.assertEquals("Tabela1 NATURAL RIGHT JOIN Tabela2", obj
				.codigoSQL());
	}

	@Test
	public void juncaoNaturalLeftEntreDuasTabelas() {
		obj = new TabelaSelecaoNaturalJoin(new TabelaSelecao(tabela1, null),
				new TabelaSelecao(tabela2, null), TipoJuncaoPesquisa.LEFT);
		Assert.assertEquals("Tabela1 NATURAL LEFT JOIN Tabela2", obj
				.codigoSQL());
	}

	@Test
	public void juncaoNaturalLeftentreDuasTabelasNomeandoComAlias() {
		obj = new TabelaSelecaoNaturalJoin(new TabelaSelecao(tabela1, null),
				new TabelaSelecao(tabela2, null), TipoJuncaoPesquisa.LEFT,
				"agua");
		Assert.assertEquals("(Tabela1 NATURAL LEFT JOIN Tabela2)AS agua", obj
				.codigoSQL());
	}

}
